In [1]:
import json
from datetime import datetime
import pandas as pd
import plotly.graph_objects as go
In [2]:
def loadjson(fn):
    f = open(fn)
    buf = f.read()
    f.close()
    
    obj = json.loads(buf)
    return obj

def showLine(title, name, x, y, xname = '', yname = ''):
    fig = go.Figure()
    fig.add_trace(go.Scatter(x=x, y=y,
                        mode='lines',
                        name=name))
    
    fig.update_layout(title=title)    
    fig.update_xaxes(title_text=xname)
    fig.update_yaxes(title_text=yname)    

    fig.show()
    
def funcGetX(e):
  return e['x']    
    
def showLineWithMap(name, obj, mode = 'lines'):
    fig = go.Figure()
    
    arr = []
    x = []
    y = []
    for k in obj:
        arr.append({'x': k, 'y': obj[k]})
    
    arr.sort(key=funcGetX)
    
    for k in range(len(arr)):
        x.append(str(arr[k]['x']))
        y.append(arr[k]['y'])
    
    fig.add_trace(go.Scatter(x=x, y=y,
                        mode=mode,#'markers',
                        name=name))

    fig.show()
    
def showLineWithMap2(name, obj, yname, colorname, mode = 'lines'):
    fig = go.Figure()
    
    arr = []
    x = []
    y = []
    color = []
    for k in obj:
        arr.append({'x': k, 'y': obj[k][yname], 'color': obj[k][colorname]})
    
    arr.sort(key=funcGetX)
    
    for k in range(len(arr)):
        x.append(str(arr[k]['x']))
        y.append(arr[k]['y'])
        color.append(arr[k]['color'])        
    
    fig.add_trace(go.Scatter(x=x, y=y,
                        mode=mode,#'markers',
                        name=name,
                        marker=dict(
                            size=2,
                            color=color,#np.random.randn(500), #set color equal to a variable
                            colorscale='bluered', # one of plotly colorscales
                            showscale=True
                        )))

    fig.show()    
    
def showLinesWithMap(title, names, objs, mode = 'lines', xname='', yname=''):
    fig = go.Figure()
    
    for i in range(len(objs)):
        name = names[i]
        obj = objs[i]
        
        arr = []
        x = []
        y = []
        for k in obj:
            arr.append({'x': k, 'y': obj[k]})

        arr.sort(key=funcGetX)

        for k in range(len(arr)):
            x.append(arr[k]['x'])
            y.append(arr[k]['y'])

        fig.add_trace(go.Scatter(x=x, y=y,
                            mode=mode,#'markers',
                            name=name))
        
    fig.update_layout(title=title)    
    fig.update_xaxes(title_text=xname)
    fig.update_yaxes(title_text=yname)    

    fig.show()        
In [3]:
report = loadjson('./genlevelupdps3.json')
showLine('主角DPS属性成长对应的HP损失', 'DPS', report['dps'], report['losehp'], xname='DPS', yname='损失HP')
In [4]:
report = loadjson('./genlevelupdps32.json')
showLine('主角DPS属性成长对应的杀敌个数', 'DPS', report['dps'], report['winnum'], xname='DPS', yname='杀敌个数')
In [5]:
report = loadjson('./genleveluphp3.json')
showLine('主角HP属性成长对应的杀敌个数', 'HP', report['hp'], report['winnum'], xname='HP', yname='杀敌个数')
In [6]:
report = loadjson('./genlevelupdownatk3.json')
showLine('主角DownAtk属性成长对应的HP损失', 'DownAtk', report['downatk'], report['losehp'], xname='DownAtk', yname='损失HP')
In [7]:
report = loadjson('./genlevelupdownatk32.json')
showLine('主角DownAtk属性成长对应的杀敌个数', 'DownAtk', report['downatk'], report['winnum'], xname='DownAtk', yname='杀敌个数')
In [ ]: